import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

// PersonOverride 类
class PersonOverride {
    private String name;
    private int age;
    private boolean gender;

    // 有参构造方法
    public PersonOverride(String name, int age, boolean gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    // 无参构造方法
    public PersonOverride() {
        this("default", 1, true);
    }

    // toString 方法
    @Override
    public String toString() {
        return name + "-" + age + "-" + gender;
    }

    // equals 方法
    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        PersonOverride that = (PersonOverride) obj;
        return age == that.age &&
                gender == that.gender &&
                Objects.equals(name, that.name);
    }
}

// 主类
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 2.1 输入 n1，使用无参构造方法创建 n1 个对象，放入 persons1
        int n1 = scanner.nextInt();
        List<PersonOverride> persons1 = new ArrayList<>();
        for (int i = 0; i < n1; i++) {
            persons1.add(new PersonOverride());
        }

        // 2.2 输入 n2，创建对象并放入 persons2（去重）
        int n2 = scanner.nextInt();
        List<PersonOverride> persons2 = new ArrayList<>();
        for (int i = 0; i < n2; i++) {
            String name = scanner.next();
            int age = scanner.nextInt();
            boolean gender = scanner.nextBoolean();
            PersonOverride person = new PersonOverride(name, age, gender);

            // 检查是否已存在
            if (!persons2.contains(person)) {
                persons2.add(person);
            }
        }

        // 2.3 输出 persons1 数组中的所有对象
        for (PersonOverride person : persons1) {
            System.out.println(person);
        }

        // 2.4 输出 persons2 数组中的所有对象
        for (PersonOverride person : persons2) {
            System.out.println(person);
        }

        // 2.5 输出 persons2 中实际包含的对象的数量
        System.out.println(persons2.size());

        // 2.6 输出 PersonOverride 的所有构造方法
        System.out.println(Arrays.toString(PersonOverride.class.getConstructors()));
    }
}